package com.fr.lintcode;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

/**
*作者：furong
*日期：2017年1月22日
*时间：下午2:12:11
*/
public class Q15 {
    /**
     * @param nums: A list of integers.
     * @return: A list of permutations.
     */
    List<List<Integer>> rs = new ArrayList<>();

    public List<List<Integer>> permute(int[] nums) {
        List<Integer> result = new ArrayList<Integer>();
        if (nums == null || nums.length <= 0) {
            rs.add(result);
            return rs;
        }
        int length = nums.length;
        permute(0, length, nums, result);
        return rs;
    }

    private void permute(int i, int length, int[] nums, List<Integer> result) {
        List<Integer> l = new ArrayList<>(result);
        if (i >= length) {
            rs.add(l);
        } else {
            for (int k = 0; k < length; k++) {
                if (!l.contains(nums[k])) {
                    l.add(nums[k]);
                    permute(i + 1, length, nums, l);
                    l.remove((Integer) nums[k]);
                }
            }
        }
    }

    @Test
    public void testA() {
        int nums[] = { 1, 2, 3, 4 };
        System.out.println(permute(nums));
    }
}
